package com.kt.mes.listener;

//启动监听

import com.kt.mes.domain.SysSet;
import com.kt.mes.opc.OpcInteface;
import com.kt.mes.service.ISysSetService;
import com.kt.mes.service.impl.SysSetServiceImpl;
import com.kt.mes.util.MqttUtil;
import com.kt.mes.util.OpcUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class ApplicationStartQuartzJobListener implements ApplicationListener<ContextRefreshedEvent> {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private OpcInteface opcInteface;

    @Autowired
    private ISysSetService sysSetService;



    /**
     * //初始启动OPC 连接
     */
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {

        //OPC MQTT 两种模式连接












            //MQTT 连接启动
        logger.info("MQTT 连接启动。。。");
        MqttUtil.subTopic("from/station/function",2);
        MqttUtil.subTopic("from/station/state/gw01",2);
        MqttUtil.subTopic("from/station/state/gw02",2);
        MqttUtil.subTopic("from/station/state/gw03",2);
        MqttUtil.subTopic("from/station/state/gw04",2);
        MqttUtil.subTopic("from/station/state/gw05",2);
        MqttUtil.subTopic("from/station/state/gw06",2);












//        logger.info("查询配置。。。。。");
//
//        List<SysSet> sysSetList= sysSetService.selectSysSetList(null);
//
//        sysSetList.forEach(v->{
//
//
//            switch (v.getSetName()){
//                case "station_con_type":
//                    //判断站点连接类型
//                    logger.info("判断站点连接类型。。。。。");
//                    break;
//            }
//
//        });





//        try {
//
//            logger.info("opc 连接启动。。。");
//
//     //       opcInteface.getCon("gw01", OpcUtil.opcUrlGw01);
////            opcInteface.getCon("gw02", OpcUtil.opcUrlGw02);
////            opcInteface.getCon("gw03", OpcUtil.opcUrlGw03);
////            opcInteface.getCon("gw04", OpcUtil.opcUrlGw04);
////            opcInteface.getCon("gw05", OpcUtil.opcUrlGw05);
////            opcInteface.getCon("gw06", OpcUtil.opcUrlGw06);
//
//
//
//
//            //创建定时任务
//
//
//            OpcUtil.mapOpcClient.forEach((gw, opcUaClient) -> {
//
//                switch (gw) {
//                    case "gw01":
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw01");
//                        } else {
//                        }
//
//                        break;
//                    case "gw02":
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw02");
//                        } else {
//
//                        }
//                        break;
//                    case "gw03":
//
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw03");
//                        } else {
//
//                        }
//                        break;
//                    case "gw04":
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw04");
//                        } else {
//
//                        }
//                        break;
//                    case "gw05":
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw05");
//                        } else {
//
//                        }
//                        break;
//                    case "gw06":
//
//                        if (opcUaClient != null) {
//                            opcInteface.subscriptionOfGw("gw06");
//                        } else {
//
//                        }
//                        break;
//                }
//                //System.out.println(job);
//
//
//
//            });
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}

